
package net.qiqbframework.messaging.annotation;


import net.qiqbframework.common.resolving.ResolveAttributes;
import net.qiqbframework.messaging.Message;

import java.lang.annotation.*;

/**
 * 被标记的成员将订阅特定类型的消息。
 * 不建议直接使用。
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.METHOD})
@ResolveAttributes
public @interface MessageHandler {

    /**
     * 指定成员可以处理的消息类型
     */
    Class<? extends Message> messageType() default Message.class;

    /**
     * 指定成员可以处理的消息负载的类型。消息的有效负载应可分配给此类型
     */
    Class<?> payloadType() default Object.class;
}
